/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package feuerwehr;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author gundlape
 */
public class Detail {
    
    /**
     * Konstruktor für die Klasse Details
     * @param pk Der Primary Key
     * @param detail Der Detailtext
     * @param datum Das Datum
     * @param person Der Bearbeiter
     */
    public Detail(int pk, String detail, Timestamp datum, Person person) {
        this.pk=pk;
        this.detail=detail;
        this.datum=datum;
        this.person=person;
    }
    
    /**
     * Liste aller möglichen Details erstellen
     * @param iPK Der EinsatzPK
     * @return Array mit allen Details
     */
    public static List <Detail> getDetails(int iPK) {
        List <Detail> al = new ArrayList();
        try {
            PreparedStatement ps = Feuerwehr.getConnection().prepareStatement("select pk, detail, datum, fk_person from t_e_details where fk_einsatz = ? order by datum desc");
            ps.setInt(1, iPK);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                Detail d = new Detail(rs.getInt("pk"), rs.getString("detail"), rs.getTimestamp("datum"), Person.getPerson(rs.getInt("fk_person")));
                al.add(d);
            }
            rs.close();
            ps.close();            
        } catch (SQLException exc) {
            System.err.println("ERROR[Detail]: " + exc.toString());
        }
        return al;
    }    

    /**
     * Den DetailPK zurückgeben
     * @return Der PK als String
     */
    public String getPK() {
        return String.valueOf(pk);
    }
    
    /**
     * Den Detailtext zurückgeben
     * @return Der Text
     */
    public String getDetail() {
        return detail;
    }
    
    /**
     * Den Detailtext setzen
     * @param s Der neue Detailtext
     */
    public void setDetail(String s) {
        detail = s;
    }

    /**
     * Das Datum zurückgeben
     * @return Das Datum, formatiert als String
     */
    public String getDatum() {
        return Feuerwehr.formatDatum(datum, "dd.MM.yyyy HH:mm:ss");
    }

    /**
     * Das Datum setzen
     * @param d Das neue Datum
     */
    public void setDatum(Timestamp d) {
        datum = d;
    }

    /**
     * Die bearbeitende Person
     * @return Person
     */
    public Person getPerson() {
        return person;
    }

    /**
     * Die bearbeitende Person
     * @param p
     */
    public void setPerson(Person p) {
        person = p;
    }
    
    @Override
    public String toString() {
        return getDatum() + " ("+ person.toString() + ")";
    }
    
    private final int pk;
    private String detail;
    private Timestamp datum;
    private Person person;
}
